1
問題解決エージェント入門
PolyU COMP5511講義 2
00:00

反射から計画へ

エージェント設計の進化において、私たちは 反射エージェント(例:「前の車がブレーキをかけたら、ブレーキを開始する」)のような単純なルールに基づいて、知覚を直接行動にマッピングするものから、 問題解決エージェントへ移行します。反射エージェントは即時のコンテキストで動作しますが、問題解決エージェントは 目標ベースです。それらは、特定の目標を満たすシーケンスを見つけるために、行動の将来の結果を考慮します。

  • 反射エージェント: $Action = Function(Percept)$
  • 計画エージェント: $Action\_Sequence = Search(State, Goal)$

アトミック状態表現

この基本的なレベルでは、エージェントは アトミック表現を使用します。これは、世界の状態がブラックボックス(検索アルゴリズムには内部構造が見えない単一のノード)として扱われることを意味します。エージェントは次についてのみ推論します。

  • 状態 ($S$): 環境のスナップショット。
  • アクション ($A$): 状態間の遷移。
  • 目標テスト: 状態 $s \in S_{goal}$ であるかどうかのブール値チェック。

問題解決ループ

問題解決エージェントは、環境をナビゲートするために、明確な4段階のサイクルに従います。

  1. 目標の策定: 現在の状況に基づいて追求すべき目標を決定する。
  2. 問題の策定: 現実世界を数学的モデル(状態とアクション)に抽象化する。
  3. 探索: 行動シーケンスをシミュレーションして、 最適なパス
  4. 実行: 検索フェーズで見つかったアクションを、さらなる検討なしに実行する(静的な環境を想定)。
Python 実装 (agent_types.py)
1
class ReflexAgent:
2
defact( self, percept):
3
# 直接マッピング: ルール → アクション
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__( self):
8
self.seq = [] # バッファリングされたアクションシーケンス
9
10
defact( self, percept):
11
# 実行中であれば、続行する
12
ifself.seq:
13
returnself.seq.pop( 0()
14
15
# それ以外の場合は、計画(検索)する
16
state = selfupdate_state(percept)
17
goal = selfformulate_goal(state)
18
problem = selfformulate_problem(state, goal)
19
20
# 検索はアクションのリストを返す
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop( 0()